<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!--
        Object.create()  第一个参数作为新对象的构造函数
        ...扩展运算符     浅拷贝  后面对象属性值会覆盖前面属性值
        .访问 或 【】    【】可以动态访问属性名
        delete obj.属性  删除对象属性
        for(i in newObj) 循环对象可枚举属性
        Object.keys()    循环枚举属性名称组成数组
        Object.assign()  合并多个对象组成一个对象
        Object.values()  循环枚举属性值组成数组
        Object.entries() 返回可枚举对象，把对象转二维数组。
        Object.fromEntries() 把二维数组 转成对象

        
        前端 对象的所有操作 与 相关总结 口诀
        回答
        在前端JavaScript中，对象的常用操作可以分为两大类：一类是直接修改原对象的操作，另一类是不直接修改原对象的操作。下面是一个关于这些操作的总结和口诀：

        直接修改原对象的操作
        delete：删除对象的属性

        in：检查对象的属性是否存在

        hasOwnProperty：检查对象的属性是否是其自身的属性

        propertyIsEnumerable：检查对象的属性是否可枚举

        getOwnPropertyDescriptor：获取对象的自身属性的描述符

        defineProperty：给对象定义新的属性或者修改现有属性的描述符

        setPrototypeOf：设置对象的原型

        getPrototypeOf：获取对象的原型

        keys：获取对象自身的所有属性名

        values：获取对象自身的所有属性值的数组

        entries：获取对象自身的所有键值对的数组

        不直接修改原对象的操作
        assign：将源对象的属性复制到目标对象上，返回目标对象

        copy：浅复制对象，返回一个新的对象

        merge：深复制对象，返回一个新的对象

        freeze：冻结对象，使其不可扩展，返回被冻结的对象

        seal：封闭对象，使其不可扩展，返回被封闭的对象

        preventExtensions：禁止对象扩展，返回被禁止扩展的对象

        isFrozen：检查对象是否已被冻结

        isSealed：检查对象是否已被封闭

        isExtensible：检查对象是否可扩展

        口诀
        增删改查会修改原对象，其余不会

        赋值操作会改变原对象，其余不会

        原型操作会改变原对象，其余不会

        属性描述符操作会改变原对象，其余不会
    -->
    
</body>
</html>